<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <script>
        let data={
            msg:'hello',
            count:10
        }
        let vm={}
        proxyData(data)
        function proxyData(data){
            Object.keys(data).forEach(key=>{
                Object.defineProperty(vm,key,{
                    enumerable:true,
                    configurable:true,
                    get(){
                        console.log('get ',data[key])
                        return data[key];
                    },
                    set(newValue){
                        console.log('set :',newValue)
                        if(newValue===data[key]){
                            return
                        }
                        data[key]=newValue
                        document.querySelector('#app').textContent=data[key]
                    }
                })
            })
        }
        
        vm.msg='hello world'//set
        console.log(vm.msg)//get
    </script>
</body>
</html>